/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package networkrespnse;

import core.ParameterDecoder;
import utils.Utils;
/**
 *
 * @author Kvest
 */
public class TCPMessageResponse extends Response
{
    private String mesType;
    private String message;
    private String from;
    private String to;
    private long reciveDate;
    private String className;
    private int orderID;

    public TCPMessageResponse(byte[] data)
    {
        super(TCPMESSAGE_RESPONSE);
        mesType = "";
        message = "";
        from = "";
        to = "";
        reciveDate = 0;
        className = "";
        orderID = -1;
        
        parse(data);
    }

    protected void parse(byte[] data)
    {
        byte[] body,temp,temp1;
        int index,size;
        //��������  body
        body = ParameterDecoder.getTransferBody(data);
        //������������� ��������
        temp = new byte[4];
        index = 0;
        for (int i=0;i<4;i++)
        {
                temp[i] = body[index++];
        }
        index += Utils.byteToInt(temp);
        
        //������ �������� - MesType
        temp = new byte[4];
        for (int i=0;i<4;i++)
        {
                temp[i] = body[index++];
        }
        size = Utils.byteToInt(temp);
        temp = new byte[size];
        for (int i=0;i<size;i++)
        {
                temp[i] = body[index++];
        }
        mesType = Utils.byteToString(temp);
        
        //������ �������� - Message
        temp = new byte[4];
        for (int i=0;i<4;i++)
        {
                temp[i] = body[index++];
        }
        size = Utils.byteToInt(temp);
        temp = new byte[size];
        for (int i=0;i<size;i++)
        {
                temp[i] = body[index++];
        }
        message = Utils.byteToString(temp);

        //������ �������� - From
        temp = new byte[4];
        for (int i=0;i<4;i++)
        {
                temp[i] = body[index++];
        }
        size = Utils.byteToInt(temp);
        temp = new byte[size];
        for (int i=0;i<size;i++)
        {
                temp[i] = body[index++];
        }
        from = Utils.byteToString(temp);

        //��������� �������� - To
        temp = new byte[4];
        for (int i=0;i<4;i++)
        {
                temp[i] = body[index++];
        }
        size = Utils.byteToInt(temp);
        temp = new byte[size];
        for (int i=0;i<size;i++)
        {
                temp[i] = body[index++];
        }
        to = Utils.byteToString(temp);

        //����� �������� - ���a
        temp = new byte[8];
        for (int i=0;i<8;i++)
        {
                temp[i] = body[index++];
        }
        reciveDate = Utils.byteToDate(temp);

        //������ �������� - BinData
        temp = new byte[4];
        for (int i=0;i<4;i++)
        {
                temp[i] = body[index++];
        }
        size = Utils.byteToInt(temp);
        if (size>0)
        {
                //��������� ����������������� ����� �� BinData
                temp = new byte[size];
                for (int i=0;i<size;i++)
                {
                        temp[i] = body[index++];
                }
                //��������� ���� �����
                int tempindex=0;
                temp1 = new byte[4];
                for (int i=0;i<4;i++)
                {
                        temp1[i] = temp[tempindex++];
                }
                size = Utils.byteToInt(temp1);
                temp1 = new byte[size];
                for (int i=0;i<size;i++)
                {
                        temp1[i] = temp[tempindex++];
                }
                className = Utils.byteToString(temp1);

                //if (className.equals("IMAP.Net.OrderIsYours_mesbindata")||className.equals("IMAP.Net.OrderIsNotYours_mesbindata"))
                if (!className.equals(""))
                {
                        temp1 = new byte[4];
                        for (int i=0;i<4;i++)
                        {
                                temp1[i] = temp[tempindex++];
                        }
                        orderID = Utils.byteToInt(temp1);
//                        size = Utils.byteToInt(temp1);
//                        if (size>0)
//                        {
//                                orderID = Integer.toString(size);
//                        }
                }
        }
    }

    public String getMesType()
    {
        return mesType;
    }

    public String getMessage()
    {
        return message;
    }

    public void setFrom(String value)
    {
        from = value;
    }

    public String getFrom()
    {
        return from;
    }

    public String getTo()
    {
        return to;
    }

    public long getReciveDate()
    {
        return reciveDate;
    }

    public String getClassName()
    {
        return className;
    }

    public int getOrderID()
    {
        return orderID;
    }
}
